package com.itheima.d3_transform_stream;

import java.io.*;

/**
 * 目标：掌握字符输出转换流的使用。
 *
 *  需要控制写出去的字符使用什么字符编码集：
 * 方法一：调用String提供的getBytes方法解决
 *  String data = "我爱你中国abc";
 *  byte[] bytes = data.getBytes("GBK");
 *
 * 方法二：使用”字符输出转换流”实现
 * OutputStreamWriter字符输出转换流
 * 作用：可以控制写出去的字符使用什么字符集编码。
 * 解决思路：获取字节输出流，再按照指定的字符集编码将其转换成字符输出流，以后写出去的字符就会用该字符集编码了。
 *
 *      构造器
 *  public OutputStreamWriter(OutputStream os)      可以把原始的字节输出流，按照代码默认编码转换成字符输出流。
 *  public OutputStreamWriter(OutputStream os，String charset)   可以把原始的字节输出流，按照指定编码转换成字符输出流(重点)
 *
 * 弹幕：你们可以根据问题去记，最初有低级流，输入输出太慢了，换成了高级流，然后因为乱码问题，有了转换流。这样记还可以
 */
public class OutputStreamWriterTest3 {
    public static void main(String[] args) {
        // 指定写出去的字符编码。
        try (
                // 1、创建一个文件字节输出流
                OutputStream os = new FileOutputStream("io-app2/src/itheima07out.txt");
                // 2、把原始的字节输出流，按照指定的字符集编码转换成字符输出转换流。
                Writer osw = new OutputStreamWriter(os, "GBK");
                // 3、把字符输出流包装成缓冲字符输出流
                BufferedWriter bw = new BufferedWriter(osw);
                ){
            bw.write("我是中国人abc");
            bw.write("我爱你中国123");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
